#coding=utf-8
# http://www.woshicver.com/

# 访问摄像头需有管理员权限，故应该在终端中以sudo来运行此code

# 在从摄像机捕获的代码下面，沿垂直方向翻转每一帧并保存。
import numpy as np
import cv2 as cv

cap = cv.VideoCapture(0) # 摄像头索引
ret = cap.set(cv.CAP_PROP_FRAME_WIDTH,320)  # 设置分辨率为 320x240
ret = cap.set(cv.CAP_PROP_FRAME_HEIGHT,240)

# 定义编解码器并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (320, 240))
# 参数：文件名，FourCC代码，传递帧率的数量 ，帧大小（宽x高），颜色标识
# FourCC:http://en.wikipedia.org/wiki/FourCC 是用于指定视频编解码器的4字节代码。
# 可用代码 列表可在fourcc.org中:http://www.fourcc.org/codecs.php 找到。
# FourCC代码作为MJPG的 cv.VideoWriter_fourcc('M'，'J'，'P'，'G') or cv.VideoWriter_fourcc(*'MJPG') 传递。
while cap.isOpened():
	ret, frame = cap.read()
	if not ret:
		print("Can't receive frame (stream end?). Exiting ...")
		break

	frame = cv.flip(frame, 0) # 沿垂直方向翻转

	# 写翻转的框架
	out.write(frame)
	cv.imshow('frame', frame)
	print 'saved'

	if cv.waitKey(1) == ord('q'):
		break

# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()

#### 文件并未成功写入？？ ####

